package com.fdb.efp.nls.service.dao;

import com.fdb.efp.nls.service.domain.ColltTaskInfo;
import com.fdb.efp.nls.service.vo.ColltTaskInfoVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * DAO Interface: 催收任务信息
 * @author ligm
 * @date 2019-08-27 
 */
public interface ColltTaskInfoDao {
	
	/**
	 * 新增数据 
     * @param colltTaskInfo
	 * @return 
	 */
	public int insertColltTaskInfo(ColltTaskInfo colltTaskInfo);

    /**
	 * 根据主键删除信息 
     * @param colltTaskInfo
	 * @return 
	 */
	public int deleteByPk(ColltTaskInfo colltTaskInfo);

    /**
	 * 根据主键更新信息 
     * @param colltTaskInfo
	 * @return 
	 */    
	public int updateByPk(ColltTaskInfo colltTaskInfo);

    /**
	 * 根据主键查询详情 
     * @param colltTaskInfo
	 * @return 
	 */
    public ColltTaskInfo queryByPk(ColltTaskInfo colltTaskInfo);

	public List<ColltTaskInfo> queryAllOwnerByPage(ColltTaskInfoVO colltTaskInfo);
	
	public List<ColltTaskInfo> queryAllCurrOrgByPage(ColltTaskInfoVO colltTaskInfo);
	
	public List<ColltTaskInfo> queryAllCurrDownOrgByPage(ColltTaskInfoVO colltTaskInfo);

	public List<ColltTaskInfo> queryAllCurrOwnerPrdByPage(ColltTaskInfoVO colltTaskInfo);

    public List<ColltTaskInfo> queryExAllOwner(ColltTaskInfoVO colltTaskInfoVo);

    public List<ColltTaskInfo> queryExAllCurrOrg(ColltTaskInfoVO colltTaskInfoVo);

    public List<ColltTaskInfo> queryExAllCurrDownOrg(ColltTaskInfoVO colltTaskInfoVo);

    public List<ColltTaskInfo> queryExAllCurrOwnerPrd(ColltTaskInfoVO colltTaskInfoVo);

    public List<ColltTaskInfo> queryAllByCondition(ColltTaskInfo colltTaskInfo);

	public List<ColltTaskInfo> queryByConditionByPage(ColltTaskInfo colltTaskInfo);

	/**
	 * 根据 催收方式=“专项催收” 和 催收员名称为空  查询全部数据
	 * @author xiezw
	 * @params  * @param null
	 * @return
	 * @date 2019/8/29 9:23
	 * @version 0.1
	 */
	public List<ColltTaskInfo> queryByColltWayByPage(ColltTaskInfo colltTaskInfo);

	/**
	 * 根据 催收方式=“电话催收” 和 催收员名称为空  查询全部数据
	 * @author dengzc
	 * @return
	 * @date 2019/8/30 10:07
	 * @version 0.1
	 */
	public List<ColltTaskInfo> queryByCallWayByPage(ColltTaskInfo colltTaskInfo);

	/**
	 * 根据催收方式、是否已分配，获取分案催收任务数据
	 * @author qiuyf
	 * @return
	 * @date 2019/9/4 9:51
	 * @version 0.1
	 */
	public List<ColltTaskInfo> getDistrCaseColltTasks(ColltTaskInfo colltTaskInfo);

	/**
	 * 任务状态为“"正常","延案"，获取延案催收任务数据、导入催收结果数据
	 * @author qiuyf
	 * @return
	 * @date 2019/9/12 10:26
	 * @version 0.1
	 */
	public List<ColltTaskInfo> getOutsPopColltTaskByPage(ColltTaskInfo colltTaskInfo);

	public int batchUpdateDomain(@Param("colltTaskInfoList") List<ColltTaskInfo> colltTaskInfoList);

	public List<ColltTaskInfo> queryByTaskNo(@Param("taskNo") List<String> taskNo);

	/**
	 * 催收任务流程审批通过后更新方法
	 * @param colltTaskInfo
	 * @return
	 */
	public int updateFlowInfo(ColltTaskInfo colltTaskInfo);

	public int batchUpdRebackDomain(@Param("colltTaskInfos") List<ColltTaskInfo> colltTaskInfos);

	public List<ColltTaskInfo> queryInfosOverdueByPage(ColltTaskInfoVO vo);

	public List<ColltTaskInfo> queryExInfosOverdue(ColltTaskInfoVO vo);

	/**
	 * 外催分案审批拒绝，更新催收任务信息
	 * @param colltTaskInfo
	 * @return
	 */
	public int updateRebackInfo(ColltTaskInfo colltTaskInfo);

    public List<ColltTaskInfo> getRepamentCase(ColltTaskInfo colltTaskInfo);

    public ColltTaskInfo queryOverLmt(ColltTaskInfo queryColltTaskInfo);

	public List<ColltTaskInfo> queryAllByCoop(@Param("cooprOrgNo") String cooprOrgNo);

	/**
	 * 催收任务撤回
	 * @param colltTaskInfo
	 * @return
	 */
	public int rebackVOToOrign(ColltTaskInfo colltTaskInfo);
	
	public List<ColltTaskInfo> queryColltTaskInfoPropsByPage(ColltTaskInfoVO vo);

	ColltTaskInfo getColltTaskInfoVOByTaskNo(ColltTaskInfoVO vo);
}
